﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Nhom14_HTTTHD_BuyMe.function;

namespace Nhom14_HTTTHD_BuyMe
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
              
        
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG KY                           /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int Register(string username, string password, string email, string firstname, string lastname, string tel, string fax, string company, string website)
        {
            // dang ki user
            int result = Account.AddAccount(username, password, email, firstname, lastname, tel, fax, company, website);
            return result;
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG NHAP                         /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int Login(string username, string password)
        {
            return Account.Login(username, password); // login
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: THANH TOAN                        /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int payment(int from_account, int to_account, float money, string message)
        {
            int result = Account.DecreaseAccountCredit(from_account, money); // tru tien cua account gui
            if (result == 1) // neu tru tien thanh cong
            {
                Account.IncreaseAccountCredit(to_account, money); // tang tien cua account nhan
                string sms1 = "Ban da duoc cong them " + money.ToString() + " vao tai khoan cua minh!";
                string sms2 = "Ban da bi tru " + money.ToString() + " trong tai khoan cua minh!";
                if (to_account != 1) Message.AddMessage(1, to_account, sms1); // gui tin nhan thong bao
                if (from_account != 1) Message.AddMessage(1, from_account, sms2); // gui tin nhan thong bao
                return Payment.AddPayment(from_account, to_account, money, message); // them payment
                /* VuPham's Note */               
            }
            else return 0;
        }
        


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG GUI TIN NHAN                 /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int message(int from_account, int to_account, string message)
        {
            // gui tin nhan
            int result = Message.AddMessage(from_account, to_account, message);
            return result;
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG DANG BAN DOMAIN + WEBSITE          /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int Sell(int id_account, string SiteURL, string Description, string PageView, string price, int id_category, int type = 1, int SiteStatus = 0, string SiteName = null, string Visitor = null, string Income = null, string Cost = null, string Disk = null, String Bandwidth = null, string member = null)
        {
            if (type == 1)
            {
                return Domain.AddDomain(id_account, SiteURL, Description, PageView, price, id_category);
            }
            else if (type == 2)
            {
                return Website.AddWebsite(id_account, SiteStatus, SiteName, SiteURL, Description, Visitor, PageView, Income, Cost, Disk, Bandwidth, member, price, id_category);
            }
            else
            {
                return 0;
            }
        }

       /* ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG DANG BAN DOMAIN           /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int SellDomain(int account, string siteURL, string description, string pageview, string price, int category)
        {
            return Domain.AddDomain(account, siteURL, description, pageview, price, category); // them domain         
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DANG DANG BAN WEBSITE          /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int SellWebsite(int id_account, int SiteStatus, string SiteName, string SiteURL, string Description, string Visitor, string PageView, string Income, string Cost, string Disk, String Bandwidth, string member, string price, int id_category)
        {
            //Use Website.AddWebsite
            return Website.AddWebsite(id_account, SiteStatus, SiteName, SiteURL, Description, Visitor, PageView, Income, Cost, Disk, Bandwidth, member, price, id_category);
        }
        */
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: NANG CAP DOMAIN HOAC WEBSITE     /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int UpgradeType(int from_account, int to_account, float money, string message, int id_wd, int type)
        {
            int result = Account.DecreaseAccountCredit(from_account, money); // tru tien cua account gui
            if (result == 1) // neu tru tien thanh cong
            {
                Account.IncreaseAccountCredit(to_account, money); // tang tien cua account nhan    
                string sms2 = "Bạn đã bị trừ " + money.ToString() + " trong tài khoản của mình! Lý do: sử dụng special type của hệ thống!";
                if (from_account != 1) Message.AddMessage(1, from_account, sms2); // gui tin nhan thong bao

                if (type == 1)
                {
                    Website.UpdateType(id_wd, 1); // nang cao website
                }
                else
                {
                    Domain.UpdateType(id_wd, 1); // nang cap domain
                }

                return Payment.AddPayment(from_account, to_account, money, message); // them payment
            }
            else return 0;
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: DAT GIA                   /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int bidPrice(string SID, int type, int id_account, int id_iwebsite, float price, string message)
        {
            if (1 == 1)
            {

                    if (type == 1) // bid website
                    {
                        int result = BidWebsite.AddBidWebsite(id_account, id_iwebsite, price, message);
                        string sms = "Đã có một khách hàng đặt bài ở bài đăng của bạn. <a href=\"details.aspx?id="+id_iwebsite+"\">click</a>";
                        Message.AddMessage(1, Website.GetAccountID(id_iwebsite), sms);
                        return result;
                    }
                    else if (type == 2) // bibdomain
                    {
                        int result=  BidDomain.AddBidDomain(id_account, id_iwebsite, price, message);
                        string sms = "Đã có một khách hàng đặt bài ở bài đăng của bạn. <a href=\"details.aspx?id=" + id_iwebsite + "\">click</a>";
                        Message.AddMessage(1, Domain.GetAccountID(id_iwebsite), sms);
                        return result;
                    }
                    else
                    {
                        return 0;
                    }
            }
            else
            {
                return 0;
            }
        }

        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: TAO TRANSACTION, CHON DOI TAC     /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int createTransaction(string SID, int id_bib, int Type_bid)
        {
                double price = 0;
                using (websitebrokenEntities context = new websitebrokenEntities())
                {
                    int id_buyer = 0;
                    int id_seller = 0;
                    if (Type_bid == 1) // tao transaction cho website
                    {                       
                        price = Convert.ToDouble(BidWebsite.GetPrice(id_bib));
                        id_buyer = BidWebsite.GetAccountBid(id_bib); // lat thong tin buyer va seller
                        int website = BidWebsite.GetWebsiteID(id_bib);
                        Website.CloseWebsite(website);
                        id_seller = Website.GetAccountID(website);
                        
                    }
                    else if (Type_bid == 2) // tao transaction cho domain
                    {
                        price = Convert.ToDouble(BidDomain.GetPrice(id_bib));
                        id_buyer = BidDomain.GetAccountBid(id_bib);// lat thong tin buyer va seller
                        int domain = BidDomain.GetDomainID(id_bib);
                        Domain.CloseDomain(domain);
                        id_seller = Domain.GetAccountID(domain);
                    }
                    else
                    {
                        return 0;
                    }
                    Transaction.AddTransaction(id_bib, Type_bid, (float)price);
                    string sms1 = "Bạn đã đặt giá thành công. Giao dịch đã được tạo bởi người bán. ID bid: " + id_bib;
                    //string sms2 = "Co mot dat gia moi tren bai dang cua ban!";
                    // gui tin nhan thong bao cho buyer va seller
                    //Message.AddMessage(1, id_seller, sms2);
                    Message.AddMessage(1, id_buyer, sms1);


                    
                }

                return 1;
        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: CHON THANH TOAN KHONG QUA HE THONG /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////

        /* VuPham's Note
         * Gom 2 hàm TransactionKAT với TransactionAT thành 1
         * SavePaymentType: lưu hình thức thanh toán
         */
        [WebMethod]
        public int TransactionKAT(string SID, int iTranID, float money)
        {
            if (1 == 1)
            {
                int seller = Transaction.GetSeller(iTranID); // lay id nguoi ban
                int buyer = Transaction.GetBuyer(iTranID); // lay id nguoi mua

                int result = Account.DecreaseAccountCredit(buyer, money); // tru tien cua account gui
                if (result == 1) // neu tru tien thanh cong
                {
                    Account.IncreaseAccountCredit(seller, money); // tang tien cua account nhan
                    string sms2 = "Bạn đã bị trừ " + money.ToString() + " trong tài khoản của mình! Giao dịch kết thúc!";
                    if (buyer != 1) Message.AddMessage(1, buyer, sms2); // gui tin nhan thong bao

                    string sms3 = "Bạn đã được cộng " + money.ToString() + " trong tài khoản của mình! Giao dịch kết thúc!";
                    if (seller != 1) Message.AddMessage(1, seller, sms3); // gui tin nhan thong bao

                    string message = "Thanh Toan Qua He Thong";
                    Payment.AddPayment(buyer, 1, money, message); // them payment

                    return Transaction.ChoosePaymentType(iTranID, 2); // tao transaction an toan
                    /* VuPham's Note */
                    
                }
                else return 0;    
            }
            else
            {
                return 0;
            }


        }

        //Chua chuyen tien 0
        //Chuyen tien roi 1
        //Giao dich an toan 2
        //Giao dich thanh cong 3

        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: CHON THANH TOAN QUA HE THONG      /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int TransactionAT(string SID, int iTranID, float money)
        {
            if (1 == 1)
            {
                int seller = Transaction.GetSeller(iTranID); // lay id nguoi ban
                int buyer = Transaction.GetBuyer(iTranID); // lay id nguoi mua

                int result = Account.DecreaseAccountCredit(buyer, money); // tru tien cua account gui
                if (result == 1) // neu tru tien thanh cong
                {
                    Account.IncreaseAccountCredit(1, money); // tang tien cua account nhan
                    string sms2 = "Bạn đã bị trừ " + money.ToString() + " trong tài khoản của mình! Lý do: chuyển tiền thanh toán trước vào hệ thống!";
                    if (buyer != 1) Message.AddMessage(1, buyer, sms2); // gui tin nhan thong bao

                    string message = "Thanh Toan Qua He Thong";
                    Payment.AddPayment(buyer, 1, money, message); // them payment

                    string sms = "Người mua đã chọn thanh toán qua hệ thống! Hãy cập nhật thông tin cho giao dịch!";
                    Message.AddMessage(1, seller, sms);

                    return Transaction.ChoosePaymentType(iTranID, 1); // tao transaction an toan
                    /* VuPham's Note */
                    
                }
                else return 0;                        
            }
            else
            {
                return 0;
            }


        }

        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: CAP NHAT THONG TIN               /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int TransactionInformation(string SID, int iTranID, string mes)
        {
            if (1 == 1)
            {
                int seller = Transaction.GetSeller(iTranID);
                int buyer = Transaction.GetBuyer(iTranID);
                string sms = "Người bán đã cập nhật thông tin. Hệ thống đang tiến hành kiểm tra giao dịch!";               
                Message.AddMessage(1, buyer, sms);
                return Transaction.UpdateTransactionInformation(iTranID, mes); // cap nhat thong tin transaction information
            }
            else
            {
                return 0;
            }


        }


        ///////////////////////////////////////////////////////////////////////////////////////////////
        //                     WEB SERVICE: KET THUC GIAO DICH                /////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////
        [WebMethod]
        public int paymentEndTransaction(int from_account, int to_account, float money, string message, int int_account_get_info, int idTran)
        {
            /* VuPham's Note
             * Sao k gửi thông tin tài khoản trong hàm này luôn?
             * Thêm vô string account_info rồi gọi luôn message để gửi
             * Chưa ktra loại thanh toán, TransactionStatus, lỡ thằng buyer nó thanh toán trực tiếp rồi thì sao?
             * Lỡ chưa có thông tin tài khoản thì sao m?
             * =.=
             */
            int result = Account.DecreaseAccountCredit(from_account, money); // tru tien cua account gui
            if (result == 1) // neu tru tien thanh cong
            {
                Account.IncreaseAccountCredit(to_account, money); // tang tien cua account nhan
                string sms1 = "Giao dịch của bạn đã thành công. Bạn được cộng thêm " + money.ToString() + " vào tài khoản của mình!";
                Message.AddMessage(1, to_account, sms1); // gui tin nhan thong bao da chuyen tien cho seller

                string sms2 = "Giao dịch của bạn đã thành công!";
                Message.AddMessage(1, int_account_get_info, sms2); // gui tin nhan thong bao de user kiem tra thong tin cho buyer
                Transaction.ChangeStatus(idTran, "3");
                return Payment.AddPayment(from_account, to_account, money, message); // them payment
            }
            else return 0;
        }

        /*[WebMethod]
        public int messageTransaction(int from_account, int id_bib, int Type_bid, string message)
        {
            int to_account = 0;
                if (Type_bid == 1) //lay thong tin account va bid website
                {                   
                    int idw = BidWebsite.GetWebsiteID(id_bib);
                    to_account = Website.GetAccountID(id_bib);
                }
                else if (Type_bid == 2) // lay thong tin domain va bidwebsite
                {
                    int idw = BidDomain.GetDomainID(id_bib);
                    to_account = Domain.GetAccountID(id_bib);                    
                }
                else
                {
                    return 0;
                }
            // gui tin nhan den 2 user
            Message.AddMessage(1, from_account, message);
            Message.AddMessage(1, to_account, message); 
            
            return 1;
        }*/
                

        



        

        

        
    }
}
